package com.wyx.suanfa;

/**
 * @author 王艺锡
 * @version 1.0
 */
public class constructMaximumBinaryTree {
    //给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:
    //
    //创建一个根节点，其值为 nums 中的最大值。
    //递归地在最大值 左边 的 子数组前缀上 构建左子树。
    //递归地在最大值 右边 的 子数组后缀上 构建右子树。
    //返回 nums 构建的 最大二叉树 。
    public static void main(String[] args) {

    }
}
/*
* class Solution {
    public TreeNode constructMaximumBinaryTree(int[] nums) {
        return constructMaximumBinaryTree1(nums,0,nums.length);
    }

    public TreeNode constructMaximumBinaryTree1(int[] nums,int begin,int end){
        if(end - begin < 1){//数组为空
        return null;
        }

        if(begin - end == 1){//当前节点为叶子节点
        return new TreeNode(nums[begin]);
        }

        //如果当前节点不是叶子结点
        int maxValue = nums[begin];
        int maxValueIndex = begin;
        for(int i = begin + 1;i< end;i++){
            if(nums[i] > maxValue){
                maxValue = nums[i];
                maxValueIndex = i;
            }
        }

        TreeNode node = new TreeNode();
        node.val = maxValue;

        node.left = constructMaximumBinaryTree1(nums,begin,maxValueIndex);
        node.right = constructMaximumBinaryTree1(nums,maxValueIndex + 1,end);

        return node;

    }
}*/
